"""
简单的爬虫（容易），直接用urllib即可编写，接下来我们为大家讲解如何爬取CSDN
"""
#简单爬虫的编写
import urllib.request
import re

"""
之所以出现上面的异常,是因为如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,
但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫.
有些网站为了防止这种非正常的访问,会验证请求信息中的UserAgent(它的信息包括硬件平台、系统软件、应用软件和用户个人偏好),
如果UserAgent存在异常或者是不存在,那么这次请求将会被拒绝(如上错误信息所示)
所以可以尝试在请求中加入UserAgent的信息
"""
url="https://read.douban.com/provider/all"

#头文件格式header=("User-Agent",具体用户代理值)——元组的格式
headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36")

opener=urllib.request.build_opener()
opener.addheaders=[headers]
data=opener.open(url).read().decode("utf-8")
#decode（）方法必须使用，不然会出问题，二进制的数据好像不能赋给字符串

"""下面好像是Request的浏览器伪装
req = urllib.request.Request(url=chaper_url, headers=headers)
urllib.request.urlopen(req).read()
"""

print(len(data))
#urlopen()以文件的形式读取下来，所以后面read()
#decode()解码
pat=r'<div class="name">(.*?)</div>'
rst=re.compile(pat).findall(data)

#下面时文件操作流的代码，是专门写入本地文件的
fh=open("C:\\Users\\DELL\\Desktop\\python操作文件夹\\my.txt","w")
for i in range(len(rst)):
    print(i)
    fh.write(rst[i]+"\n")
fh.close()

#因为urllib库（基础），帮助我们理解爬虫运行的底层的操作，scrapy框架（大项目），底层方面已经帮我们处理了
